home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / UTILITY / PROCLIST.M < prev    next >
Encoding:
Text File  |  1990-12-06  |  1.4 KB  |  56 lines

  1. MODULE ProcList;
  2.  
  3. (*
  4.  * Zeigt alle Prozedurnamen eines residenten Moduls (ggf. erst laden!)
  5.  * an, sofern die Namen nicht durch optimiertes Linken oder die Direktive
  6.  * $M- entfernt wurden.
  7.  *
  8.  * Beim Start des Programms kann ein Modulname eingegeben werden,
  9.  * daraufhin werden alle Prozedurnamen daraus angezeigt.
  10.  * Ende des Programms durch eine Leereingabe.
  11.  *)
  12.  
  13. IMPORT GEMDOSIO; (*$E MOS *)
  14.  
  15. FROM InOut IMPORT
  16.   Done, ReadString, WriteLn, Write, WriteString, WriteLHex;
  17.  
  18. FROM SYSTEM IMPORT ADDRESS;
  19.  
  20. FROM ModCtrl IMPORT GetProcAddr, ProcQuery;
  21.  
  22.  
  23. PROCEDURE listIt ( REF procName: ARRAY OF CHAR; procAddr: ADDRESS );
  24.   BEGIN
  25.     WriteString ('  ');
  26.     WriteLHex (procAddr, 7);
  27.     WriteString ('  ');
  28.     WriteString (procName);
  29.     WriteLn;
  30.   END listIt;
  31.  
  32. VAR modName: ARRAY [0..19] OF CHAR;
  33.     ok: BOOLEAN;
  34.     addr: ADDRESS;
  35.  
  36. BEGIN
  37.   LOOP
  38.     WriteLn;
  39.     WriteString ('Which module? ');
  40.     ReadString (modName);
  41.     IF NOT Done OR (modName[0] = '') THEN EXIT END;
  42.     ProcQuery (modName, listIt, ok);
  43.     IF NOT ok THEN
  44.       GetProcAddr (modName, addr);
  45.       IF addr = NIL THEN
  46.         (* Modul gibt's gar nicht *)
  47.         WriteString ('This module is not resident!')
  48.       ELSE
  49.         (* Modul wurde mit $M- übersetzt oder optimiert gelinkt *)
  50.         WriteString ('This module contains no symbols!')
  51.       END;
  52.       WriteLn
  53.     END;
  54.   END
  55. END ProcList.
  56.